<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="box" onclick="console.log(this);">11111</div>
    <script>
      //   fun();
      //   function fun() {
      //     console.log(7777);
      //   }
      //   fun2();
      //   let fun2 = function () {
      //     console.log("fun2");
      //   };
      //   fun2();
      //   fun();
      //   (function () {
      //     console.log(888);
      //   })();
      //   let fun = (val1) => ({
      //     name: 88,
      //   });
      //   //   fun(123);
      //   let n = 9090;
      //   function fun() {
      //     if (false) {
      //       return false;
      //     } else {
      //       console.log(888);
      //       return true;
      //     }

      //     console.log(9090);
      //   }
      //   n = fun();
      //   console.log(n);
      //   function fun(name, age = 99) {
      //     console.log(name, age);
      //   }
      //   fun("皮特", undefined);

      //   function fun() {
      //     // console.log(num);
      //     console.log(arguments);
      //     // let n = Array.from(arguments);
      //     let n = [...arguments];
      //     console.log(n);
      //   }
      //   fun("a", "b", "c", "d", "e");

      //   function strreverse(str) {
      //     return str.split("").reverse().join("");
      //   }
      //   let res = strreverse("123456");
      //   console.log(res);

      //   function fun() {
      //     console.log(this);
      //   }
      //   console.log(fun);
      //   fun();
      //   let obj = {
      //     fn: () => {
      //       console.log(this, 123);
      //     },
      //     name: "知识点",
      //     age: 19,
      //   };
      //   obj.fn();
      //   let m = 999;
      //   function fun() {
      //     let n = 123;
      //     console.log(m);
      //     console.log(n);
      //   }
      //   function fun2() {
      //     console.log(m);
      //     let n = 456;
      //   }
      //   console.log(n);
      //   fun();
      //   fun2();
      //   function fun() {
      //     this.name = "张三";
      //     this.age = 19;
      //     this.fn = function () {
      //       console.log(666);
      //     };
      //     console.log(this);
      //   }
      //   //   new 会改变函数的this指向();
      //   //   fun();
      //   let obj = new fun();
      //   console.log(obj);
      //   function person(firstname, lastname, age, eyecolor) {
      //     this.firstname = firstname;
      //     this.lastname = lastname;
      //     this.age = age;
      //     this.eyecolor = eyecolor;
      //     return [this.firstname, this.lastname, this.age, this.eyecolor, this];
      //   }

      //   var myFather = new person("张", "三", 50, "blue");
      //   var myMother = person("李", "4", 48, "green");
      //   console.log(myFather); // this 输出一个 person 对象
      //   console.log(myMother); // this 输出 window 对象

      // function fn(num1, num2) {
      //   if (typeof num1 != "number" || typeof num2 != "number") {
      //     return "请输入数字";
      //   }
      //   return {
      //     sum: num1 + num2,
      //     cha: num1 - num2,
      //     ji: num1 * num2,
      //     shang: num1 / num2,
      //     yushu: num1 % num2,
      //   };
      // }

      // let res = fn(12, 32);
      // console.log(res);
      // console.log(this);
      // function fun() {
      //   console.log(this);
      // }
      // let obj = {
      //   name: "知识点",
      //   obj2: {
      //     age: 12,
      //     fun: () => {
      //       console.log(this);
      //     },
      //   },
      // };
      // console.log(obj.obj2.fun());
      // fun();
      // let fun = () => {
      //   console.log(this);
      // };
      // fun();
      // 5.1实现将数组的顺序随机打乱
      // let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
      // function fun(param) {
      //   // sort 根据返回的值是负数还正数来决定顺序
      //   param.sort(() => {
      //     return fun2(-1, 1);
      //   });
      //   return param;
      // }
      // let res = fun(arr);
      // console.log(res);

      // function fun2(min, max) {
      //   return Math.floor(Math.random() * (max - min + 1) + min);
      // }
      // let nums = [-4, -2, 1, 4, 0.1, -0.1, 8];
      // function fun(arr) {
      //   let min = nums[0];
      //   arr.forEach((currentItem) => {
      //     if (Math.abs(min) - 0 > Math.abs(currentItem) - 0) {
      //       min = currentItem;
      //     }
      //   });
      //   return min;
      // }
      // console.log(fun(nums));

      // function fn(num) {
      //   if (num === 0 || num === 1) {
      //     return 1;
      //   } else {
      //     return num * fn(num - 1);
      //   }
      // }

      function outer() {
        let count = 0;

        function inner() {
          count++;
          console.log(count);
        }

        return inner;
      }

      const closureFunc = outer();
      console.log(closureFunc);
      closureFunc();
      closureFunc();
    </script>
  </body>
</html>
